It is not possible to install a build-snap with a closed risk
Metadata
Current evaluation
No evaluation has been recorded for this issue yet.
Issue body
When trying to install a snap from a risk that is closed, the snap from the lower risk level that follows it will be installed.
For example, in:
$ snapcraft status u1test-snap-with-tracks
Track Arch Channel Version Revision
latest all stable latest-stable 2
candidate ^ ^
beta ^ ^
edge latest-edge 3
test-track-1 all stable - -
candidate - -
beta test-track-1-beta 5
edge ^ ^
If I run sudo snap install u1test-snap-with-tracks --candidate, because candidate is closed, stable will be installed instead.
However, when using build-snaps in snapcraft, if I specify:
build-snaps: [u1test-snap-with-tracks/latest/candidate]
I get:
Traceback (most recent call last):
File "/home/ubuntu/venv/snapcraft/bin/snapcraft", line 6, in <module>
exec(compile(open(__file__).read(), __file__, 'exec'))
File "/home/ubuntu/workspace/canonical/snapcraft/bin/snapcraft", line 36, in <module>
obj=dict(project=snapcraft.ProjectOptions()))
File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 722, in __call__
return self.main(*args, **kwargs)
File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 1043, in invoke
return Command.invoke(self, ctx)
File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/cli/__init__.py", line 110, in run
ctx.forward(lifecyclecli.commands['snap'])
File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 553, in forward
return self.invoke(cmd, **kwargs)
File "/home/ubuntu/venv/snapcraft/lib/python3.5/site-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/cli/lifecycle.py", line 132, in snap
project_options, directory=directory, output=output)
File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/internal/lifecycle.py", line 349, in snap
execute('prime', project_options)
File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/internal/lifecycle.py", line 120, in execute
repo.snaps.install_snaps(config.build_snaps)
File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/internal/repo/snaps.py", line 167, in install_snaps
snap_pkg.install()
File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/internal/repo/snaps.py", line 136, in install
if self.is_classic():
File "/home/ubuntu/workspace/canonical/snapcraft/snapcraft/internal/repo/snaps.py", line 119, in is_classic
return store_channels[self.channel]['confinement'] == 'classic'
KeyError: 'latest/candidate'
To reproduce, run the latest unreleased snapcraft with the snapcraft.yaml from http://paste.ubuntu.com/25492456/
It works when an open channel is specified, like:
build-snaps: [u1test-snap-with-tracks/latest/stable]
Evaluation history
No evaluation history available.